﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SIIV.Data;
using SIIV.Business.Exceptions;

namespace SIIV.Business
{
    public class ProductorBusiness
    {
        public List<Productor> ObtenerProductores(int idUsuario)
        {
            using (SIIVDataModel model = new SIIVDataModel())
            {
                return model.Productores.Include("Campos").Where(u => u.Activo && u.IdVeterinario .Equals(idUsuario)).ToList();
            }
        }

        public void AgregarProductor(string nombre, int idVeterinario)
        {
            using (SIIVDataModel model = new SIIVDataModel())
            {
                if (!model.Productores.Any(p => p.Nombre.Equals(nombre) && p.IdVeterinario.Equals(idVeterinario)))
                {
                    model.AddToProductores(new Productor() { Activo = true, Nombre = nombre, IdVeterinario = idVeterinario });
                    model.SaveChanges();
                }
                else
                {
                    throw new FunctionalException("Ya existe el productor.");
                }
            }
        }

        public void ActualizarProductor(int idProductor, string nombre)
        {
            using (SIIVDataModel model = new SIIVDataModel())
            {
                Productor productor = model.Productores.Single(u => u.IdProductor.Equals(idProductor));
                if (!model.Productores.Any(p => p.Nombre.Equals(nombre) && p.IdVeterinario.Equals(productor.IdVeterinario)))
                {
                    productor.Nombre = nombre;
                    model.SaveChanges();
                }
                else
                {
                    throw new FunctionalException("Ya existe el productor.");
                }
            }
        }

        public void EliminarProductor(int idProductor)
        {
            using (SIIVDataModel model = new SIIVDataModel())
            {
                Productor productor = model.Productores.Single(u => u.IdProductor.Equals(idProductor));
                productor.Activo = false;
                model.SaveChanges();
            }
        }
    }
}
